package method;

/**
 * @author DCSGO
 * @version 1.0
 * 线程常用方法1
 */
public class Method01 {
    public static void main(String[] args) throws InterruptedException {
        T t = new T();
        //setName 设置该线程名称
        t.setName("熊猫");
        //getName 获取该线程的名称
        System.out.println(t.getName());
        //setPriority 设置该线程的优先级
        //MIN_PRIORITY -> 1 最低 NORM_PRIORITY -> 5 常规 MAX_PRIORITY -> 10 最高
        t.setPriority(Thread.MIN_PRIORITY);
        System.out.println(t.getPriority());
        //start 使该线程开始执行 -> run 方法
        t.start();
        System.out.println("已经叫 " + t.getName() + "开始了");

        for (int i = 0; i < 5; i++) {
            System.out.println("main " + i);
        }

        System.out.println("main 将要休眠 5s");
        //让当前正在执行的线程休眠指定毫秒
        Thread.sleep(5 * 1000);

        //中断该线程(处于休眠中的线程 将会开始执行)
        t.interrupt();

        System.out.println("main 通知 " + t.getName() + "10s后不许再吃了!");
        Thread.sleep(10 * 1000);
        t.setLoop(false);

        /*
         * 熊猫
         * 1
         * 已经叫 熊猫开始了
         * main 0
         * main 1
         * main 2
         * main 3
         * main 4
         * main 将要休眠 5s
         * 熊猫在吃包子0
         * 熊猫在吃包子1
         * 熊猫在吃包子2
         * 熊猫在吃包子3
         * 熊猫在吃包子4
         * 熊猫将要休息10s
         * main 通知 熊猫10s后不许再吃了!
         * 熊猫被中断了
         * 熊猫在吃包子0
         * 熊猫在吃包子1
         * 熊猫在吃包子2
         * 熊猫在吃包子3
         * 熊猫在吃包子4
         * 熊猫将要休息10s
         * java.lang.InterruptedException: sleep interrupted
         * 	at java.lang.Thread.sleep(Native Method)
         * 	at method.T.run(Method01.java:55)
         * 熊猫在吃包子0
         * 熊猫在吃包子1
         * 熊猫在吃包子2
         * 熊猫在吃包子3
         * 熊猫在吃包子4
         * 熊猫将要休息10s
         *
         * 进程已结束，退出代码为 0
         */
    }
}

class T extends Thread {
    private boolean loop = true;

    public void setLoop(boolean loop) {
        this.loop = loop;
    }

    @Override
    public void run() {
        while (loop) {
            for (int i = 0; i < 5; i++) {
                System.out.println(Thread.currentThread().getName() + "在吃包子" + i);
            }
            try {
                System.out.println(Thread.currentThread().getName() + "将要休息10s");
                Thread.sleep(10 * 1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
                System.out.println(Thread.currentThread().getName() + "被中断了");
            }
        }
    }
}